export module CarlosI {
    export interface AABB {
        constructor()
        setCenter(x: number, y: number, z: number): void;
        setHalfExtents(x: number, y: number, z: number): void;
        getCenter(): Vec3;
        getHalfExtents(): Vec3;
    }
    export interface Vec3 {
        constructor()
        set(x: number, y: number, z: number): void;
        getX():number;
        getY():number;
        getZ():number;
    }
    export interface Node {
        // constructor(uuid: string);
        setPosition(x: number, y: number, z: number): void;
        setScale(x: number, y: number, z: number): void;
        setRotation(x: number, y: number, z: number, w: number): void;
        initModel(): void;
        addBoxCollider(): ColliderBase;
        addSphereCollider(): ColliderBase;
        delCollider(): void;
        getCollider(): ColliderBase;
    }
    export enum PhysicsColliderType {
        STATIC,
        KINEMATICS
    }
    export interface ColliderBase {
        setScale(x: number, y: number, z: number): void;
        setGroup(group: number);
        getGroup(): number;
        setMask(mask: number);
        getMask(): number;
        setType(type: PhysicsColliderType);
        getType(): PhysicsColliderType;
        getAABB():AABB;
        setColliderCallback(call: Function): void;
        clearColliderCallback(): void;
    }


    export interface Engine {
        constructor();
        addNode(uuid: string): Node;
        delNode(uuid: string): void;
        getNode(uuid: string): Node;
        cleanAllNode(): void;
        openPhysics(): void;
        destroyPhysics(): void;
        update(dt: number);
    }
}